# -*- coding: utf-8 -*-
"""
Created on Fri Aug 25 22:02:03 2023

@author: skunk69
"""

import json

chinese_name = u'神经精神症状问卷'
english_name = 'Neuropsychiatric Inventory Questionnaire'
abbreviation = 'NPI-Q'
category = u'精神病学临床量表'

outline = u"""《神经精神症状问卷》是由美国神经精神医学家J. L. Cummings等1994年编制的用于评定痴呆受检者的精神行为症状的他评量表。Cummings和Kaufer于2000年编制了简本（Neuropsychiatric Inventory Questionnaire, NPI-Q）。NPI-Q包括妄想、幻觉、激越/攻击、抑郁/心境恶劣、焦虑、情绪高涨/欣快、情感淡漠、脱抑制、易激惹/情绪不稳、异常行为、夜间行为/睡眠障碍、食欲/进食障碍共12个症状。"""

instruction = u"""量表评定分为两部分，一部分为患者症状的严重程度，按照靶症状对患者的困扰程度评估，分为四级：0分表示无症状，1分表示轻度，2分表示中度，已有较多困扰，但照料者可改变/控制患者的行为，3分表示重度，行为难以改变。
另一部分为该症状带给照料者的苦恼程度，分为六级：0分表示无苦恼，1分表示一点苦恼，2分表示轻度，3分表示中度，4分表示重度，5分表示严重苦恼。"""

with open('NPI-Q.txt','r',encoding='utf-8') as f:
    lines = f.readlines()
    f.close()

items = {}
items_definition = {}
for line in lines:
    key,value = line.strip().split('、',maxsplit=1)
    items_definition[key] = value.strip()
    items[key] = value.split('：')[0]

text = u"""
量表评定分为两部分，一部分为患者症状的严重程度，按照靶症状对患者的困扰程度评估，分为四级：
0分表示无症状。
1分表示轻度。
2分表示中度，已有较多困扰，但照料者可改变/控制患者的行为。
3分表示重度，行为难以改变。
另一部分为该症状带给照料者的苦恼程度，按六级评分来评定：
0分表示无苦恼。
1分表示一点苦恼。
2分表示轻度。
3分表示中度。
4分表示重度。
5分表示严重苦恼。
"""
severity = {}
severity[0] = u'无症状'
severity[1] = u'轻度'
severity[2] = u'中度，已有较多困扰，但照料者可改变/控制患者的行为。'
severity[3] = u'重度，行为难以改变。'
distress = {}
distress[0] = u'无苦恼'
distress[1] = u'一点苦恼'
distress[2] = u'轻度'
distress[3] = u'中度'
distress[4] = u'重度'
distress[5] = u'严重苦恼'
rating_standard = [severity,distress]

reverse_items = []
scales = []
scales_items = []
factors = []
factors_scales = []
rating = []
rating.append([l.split('，')[0] for l in list(rating_standard[0].values())])
rating.append([l.split('，')[0] for l in list(rating_standard[-1].values())])

score_rules = [
    list(range(4)),
    list(range(6))
    ]

contents = {
    'instruction':instruction,
    'items':items,
    'items_definition':items_definition,    
    'rating_standard':rating_standard,
    'reverse_items':reverse_items,
    'scales':scales,
    'scales_items':scales_items,
    'factors':factors,
    'factors_scales':factors_scales,
    'rating':rating,
    'score_rules':score_rules       
    }

implementation = u"""本量表要由经培训的专业人员操作。
本量表由知情者回答，最好由主要照料者回答。
评定的时间范围可由使用者根据需要自行设定。"""

reliability = u"""国内王华丽等和伍力等的测试结果表明：内部一致性Cronbach α系数为0.57~0.85，分半信度r为0.83，严重程度总分和苦恼程度总分的相关性为0.78，检察员间的一致性ICC为0.86，相隔24小时的重测信度为0.86~0.89，相隔三个月为0.48。"""
validity = u"""与完全版NPI的相关性为0.68~0.82，和简易智力状态检查（MMSE）、阿尔茨海默病评定量表-认知部分（ADAS-cog）、阿尔茨海默病行为量表（BEHAVE-AD）的评分，均呈良好的相关性。"""
measurements = {'reliability':reliability,'validity':validity}

interpretation = u"""条目分反映靶症状及其严重程度。
可以统计两项总分：
（1）严重程度总分，范围为0~36分，反映患者精神症状的严重程度；
（2）苦恼程度总分，范围为0~60分，反映精神症状给照料者造成的苦恼。"""

applications = u"""NPI-Q应用简便，已经成为痴呆临床研究的常用工具。"""

this_scale = {
    'chinese_name':chinese_name,
    'english_name':english_name,
    'abbreviation':abbreviation,
    'category':category,
    'outline':outline,
    'contents':contents,
    'implementation':implementation,
    'measurements':measurements,
    'interpretation':interpretation,
    'applications':applications    
    }

with open(abbreviation+'.json','w+',encoding='utf-8') as f:
    json.dump(this_scale,f,indent=2,ensure_ascii=False)